# 给定一个整数数组，其中第 i 个元素代表了第 i 天的股票价格 。 
# 
#  设计一个算法计算出最大利润。在满足以下约束条件下，你可以尽可能地完成更多的交易（多次买卖一支股票）: 
# 
#  
#  你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。 
#  卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。 
#  
# 
#  示例: 
# 
#  输入: [1,2,3,0,2]
# 输出: 3 
# 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出] 
#  Related Topics 动态规划 
#  👍 538 👎 0


# leetcode submit region begin(Prohibit modification and deletion)
from typing import List


class Solution:
    def maxProfit(self, prices: List[int]) -> int:

        def dfs(prices, i, j):
            if i >= j:
                return 0

            if i == j+1:

        if len(prices) == 0:
            return 0

        if len(prices) == 2 and prices[1] > prices[0]:
            return prices[1] - prices[0]

        #  dp[i][j]表示 第 i ~j 天内买卖的获利,j 天一定是卖出的 ，那么 j+2 天开始才可以开始交易 ，计算j
        #  那么可以记录 i 天前的最低价格，计算dp

        dp = [[0 for _ in range(0, len(prices))] for _ in range(0, len(prices))]

        res = 0
        for end in range(0, len(prices)):
            res = max(res, dfs(0, end))

        return res

    # leetcode submit region end(Prohibit modification and deletion)
